#include <pthread.h>
#include <fcntl.h>
#include "interface_ada.h"

int creerStandard ()
{
	cout <<"C++ >> Creation standard " <<endl;	
	Environnement* env = Environnement::getInstance();
	Standard::Standard* standard = new Standard(env->getSize());
	env->addStandard(standard);
	cout <<"C++ >> Standard cree - id = "<< standard->getId() <<endl;		
	return standard->getId();	
}

int connecter(int id_std, int num){
	cout <<"C++ >> Connection du poste " << num << " - standard : "<< id_std <<endl;
	//prevoir les codes erreurs
	Environnement* env = Environnement::getInstance();
	Standard::Standard *std= env->getStandard(id_std);
	std->connecter(num);	
	cout <<"C++ >> Poste connecte " << num <<endl;
	return 0 ;
}

void deconnecter(int id_std, int num){
	cout <<"C++ >> Deconnection du poste " << num << " - standard : "<< id_std <<endl;
	Environnement* env = Environnement::getInstance();
	Standard::Standard *std= env->getStandard(id_std);
	std->deconnecter(num);
	cout <<"C++ >> Poste deconnecte " << num <<endl;
}

void demanderCommunication(int id_std, int num,char * host,int & port){
	Environnement* env = Environnement::getInstance();
	Standard::Standard *std= env->getStandard(id_std);
	std->demanderCommunication(num, host, port);
}

void fermerCommunication(int id_std, int port){
	Environnement* env = Environnement::getInstance();
	Standard::Standard *std= env->getStandard(id_std);
	std->fermerCommunication(port);
}

int abonnerClient(int indexStd,
			char* adresse,
			bool estMobile,
			bool repActif,
			bool messActif,
			bool transfertActif,
			int numTrans,
			int abonnement,
			char* infoComptable)
{	
	int monNum=0;
	Environnement* env = Environnement::getInstance();
	Standard::Standard *std= env->getStandard(indexStd);
	monNum=std->abonner(adresse,
			estMobile,
			repActif,
			messActif,
			transfertActif,
			numTrans,
			abonnement,
			infoComptable);
	cout<< "C++ >> numero : "<<monNum<<endl;
	return monNum;
	
}

void desabonner(int indexStd,int num)
{
	Environnement* env = Environnement::getInstance();
	Standard::Standard *std= env->getStandard(indexStd);

	std->desabonner(num);
}

void modifierAbonnement(int indexStd,
				int num,
				char* adresse,
				bool estMobile,
				bool repActif,
				bool messActif,
				bool transfertActif,
				int numTrans,
				int abonnement,
				char* infoComptable)
{
	Environnement* env = Environnement::getInstance();
	Standard::Standard *std= env->getStandard(indexStd);
	cout<<"C++ >> modification abonnement: "<<endl;
	std->modifier_abonnement(num,
				adresse,
				estMobile,
				repActif,
				messActif,
				transfertActif,
				numTrans,
				abonnement,
				infoComptable);
	cout<<"C++ >> fin modification abonnement: "<<endl;
}

